function LoggerInfoDec<T extends { new (...args: any): any }>(targetClass: T) {
  /**
   * 支持了匿名类【编译后，还是会自己生成一个类名的】
   */
  return class extends targetClass {
    constructor(...args: any) {
      super(...args);
      console.log(`日志信息 > 【${targetClass.name}】类被创建`);
    }
  };
}

@LoggerInfoDec
class Test {
  name!: string;
  age!: number;
  // 先执行原来的构造函数
  constructor(name: string) {
    this.name = name;
  }
  eat() {
    console.log(this.name, '吃饭');
  }
}

new Test('xuke');
